package com.jsjosem.aftersales.listener;


import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * 用观察者模式代替广播通知刷新界面,类似广播、EventBus、服务等通知
 *
 * @author sgf
 */
public class ListenerManager {
    /**
     * 单例模式
     */
    public static ListenerManager listenerManager;

    /**
     * 注册的接口集合，发送广播的时候都能收到
     */
    private final List<IListener> iListenerList = new CopyOnWriteArrayList<>();

    /**
     * 获得单例对象
     */
    public static ListenerManager getInstance() {
        if (listenerManager == null) {
            listenerManager = new ListenerManager();
        }
        return listenerManager;
    }

    /**
     * 注册监听
     */
    public void registerListener(IListener iListener) {
        iListenerList.add(iListener);
    }

    /**
     * 注销监听
     */
    public void unRegisterListener(IListener iListener) {
        iListenerList.remove(iListener);
    }

    /**
     * 发送广播
     */
    public void sendBroadCast(int flag, String str, String message) {
        for (IListener iListener : iListenerList) {
            iListener.notifyAllActivity(flag, str, message);
        }
    }

}